﻿Imports Clases
Public Class frmOfertas
    Private ofertaSeleccionada As Oferta 'variable para operar facilmente con la oferta que se seleccione
    Private esNuevo As Boolean 'variable que nos dice si es un nuevo producto y lo añadimos o si es uno viejo y lo modificamos
    ''' <summary>
    ''' Subprograma para cargar el comboBox
    ''' </summary>
    ''' <remarks></remarks>
    Private Sub cargarCombo()
        cboOferta.Items.Clear()
        For i As Integer = 0 To misOfertas.Ofertas.Count - 1
            cboOferta.Items.Add(misOfertas.Ofertas(i).Nombre)

        Next
    End Sub
    ''' <summary>
    ''' Cargar formulario
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Private Sub frmOfertas_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        esNuevo = True
        Me.Text &= usuarioActivo.Nombre
        If misOfertas.Ofertas.Count > 0 Then
            cargarCombo()
        End If
        If misProductos.Productos.Count > 0 Then
            For i As Integer = 0 To misProductos.Productos.Count - 1
                cboProductoOfertado.Items.Add(misProductos.Productos(i).Nombre)

            Next
        Else
            MessageBox.Show("No hay productos en nuestra base de datos.")
        End If
    End Sub
    ''' <summary>
    ''' Cuando seleccionemos una oferta del comboBox se rellenarán los campos
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Private Sub cboOferta_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles cboOferta.SelectedIndexChanged

        Dim nombreOferta As String = cboOferta.Selecteditem
        ofertaSeleccionada = New Oferta(nombreOferta, ",jh", 1, Today, 1)

        ofertaSeleccionada = misOfertas.Ofertas(misOfertas.Ofertas.IndexOf(ofertaSeleccionada))

        txtNombreOferta.Text = ofertaSeleccionada.Nombre



        cboProductoOfertado.SelectedItem = ofertaSeleccionada.Producto
        txtCantidad.Text = ofertaSeleccionada.Cantidad

        txtPrecio.Text = ofertaSeleccionada.Precio
        dtpFechaOferta.Value = ofertaSeleccionada.Fecha

        esNuevo = False
    End Sub
    ''' <summary>
    ''' Subprograma para limpiar campos
    ''' </summary>
    ''' <remarks></remarks>
    Private Sub limpiarFormulario()
        txtNombreOferta.Text = ""
        txtPrecio.Text = ""
        cboProductoOfertado.SelectedIndex = -1
        dtpFechaOferta.Value = Today
        txtCantidad.Text = ""
    End Sub
    ''' <summary>
    ''' botón para crear una nueva oferta
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Private Sub btnNewOferta_Click(sender As System.Object, e As System.EventArgs) Handles btnNewOferta.Click
        limpiarFormulario()
        esNuevo = True
    End Sub
    ''' <summary>
    ''' Botón para crear o modificar una oferta
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Private Sub btnGuardarOferta_Click(sender As System.Object, e As System.EventArgs) Handles btnGuardarOferta.Click
        Me.ErrorProvider1.Clear()
        If txtNombreOferta.Text = "" Then
            Me.ErrorProvider1.SetError(txtNombreOferta, "Debe darle un nombre a la oferta")
        Else
            Me.ErrorProvider1.SetError(txtNombreOferta, "")
        End If
        If txtPrecio.Text = "" Then
            Me.ErrorProvider1.SetError(txtPrecio, "Debe darle un precio al producto")
        Else
            Me.ErrorProvider1.SetError(txtPrecio, "")
        End If
        If cboProductoOfertado.SelectedIndex = -1 Then
            Me.ErrorProvider1.SetError(cboProductoOfertado, "Debe seleccionar un producto")
        Else
            Me.ErrorProvider1.SetError(cboProductoOfertado, "")
        End If
        If dtpFechaOferta.Value < Today Then
            Me.ErrorProvider1.SetError(dtpFechaOferta, "Seleccione una fecha mayor que hoy")
        Else
            Me.ErrorProvider1.SetError(dtpFechaOferta, "")
        End If
        If txtNombreOferta.Text <> "" AndAlso txtPrecio.Text <> "" AndAlso cboProductoOfertado.SelectedIndex <> -1 AndAlso txtCantidad.Text <> "" Then
            Dim men As String = ""
            Dim nuevaOferta As New Oferta(txtNombreOferta.Text, cboProductoOfertado.SelectedItem.ToString, Decimal.Parse(txtPrecio.Text), Date.Parse(dtpFechaOferta.Value.ToShortDateString), Integer.Parse(txtCantidad.Text))
            If esNuevo Then
                men = misOfertas.Añadir(nuevaOferta)
            Else
                men = misOfertas.Modificar(nuevaOferta, cboOferta.SelectedItem.ToString)
            End If
            If men <> "" Then
                MessageBox.Show(men)
            Else
                If esNuevo Then
                    cboOferta.Items.Add(nuevaOferta.Nombre)
                Else
                    cargarCombo()
                End If
            End If
            ofertaSeleccionada = misOfertas.Ofertas(misOfertas.Ofertas.IndexOf(nuevaOferta))
        End If
    End Sub
    ''' <summary>
    ''' Sólo admite digitos
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Private Sub txtPrecio_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles txtPrecio.KeyPress
        Const NUM = "0123456789." & ControlChars.Back
        If Not NUM.Contains(e.KeyChar.ToString) Then
            e.KeyChar = ""
        End If
    End Sub
    ''' <summary>
    ''' Sólo admite digitos
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Private Sub txtCantidad_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles txtCantidad.KeyPress
        Const NUM = "0123456789" & ControlChars.Back
        If Not NUM.Contains(e.KeyChar.ToString) Then
            e.KeyChar = ""
        End If
    End Sub
    ''' <summary>
    ''' botoón para eliminar una oferta
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Private Sub btnEliminarOferta_Click(sender As System.Object, e As System.EventArgs) Handles btnEliminarOferta.Click
        If txtNombreOferta.Text <> "" AndAlso txtPrecio.Text <> "" AndAlso cboProductoOfertado.SelectedIndex <> -1 AndAlso txtCantidad.Text <> "" Then
            Dim indice As Integer = misOfertas.Ofertas.IndexOf(ofertaSeleccionada)
            Dim men As String = misOfertas.Borrar(ofertaSeleccionada.Nombre)
            If men <> "" Then
                MessageBox.Show(men)
            Else
                cboOferta.Items.RemoveAt(indice)
                limpiarFormulario()
            End If
        Else
            MessageBox.Show("Introduca una oferta para poder borrarla", "ATENCIÓN")
        End If
    End Sub
End Class